Virtualization allows, among other things, many computing environments, such as general desktop environments, database servers, etc., to be implemented through software as virtual machines within host computing devices. A virtual machine may comprise its own operating system, applications, data files, and/or configuration, etc. As such, the virtual machine may function as a self-contained computing environment. The virtual machine may be an abstraction of the underlying hardware resources (e.g., share physical resources of the host device with one or more other virtual machines hosted by the host device). That is, the virtual machine may be a software implementation of a physical computing machine that has normal operational functionality of the physical computing machine. For example, a host computing device may comprise virtual machine host software (e.g., a hypervisor) configured to host and manage virtual machines (e.g., a virtual machine may be hosted as an instance of a virtual machine instantiated on a host computing device). The virtual machine host software may allow a user to perform a wide variety of tasks, such as virtual machine creation, deletion, configuration, initialization, backup, etc. with respect to the hosted virtual machines. The virtual machine host software may allow the user to interface to and interact with a hosted virtual machine. For example, the user may interact with the operating system and applications of the hosted virtual machine through the virtual machine host software. It may be appreciated that a virtual machine may be hosted in a running state where the virtual machine may be operating and/or accessible, or in an off state where the virtual machine may be shutdown and/or inaccessible. It may be appreciated that in one example, hosting a virtual machine may correspond to at least one of: instantiating a running instance of a virtual machine, instantiating an instance of a virtual machine in an off state, executing a virtual machine, booting up a virtual machine into an operating state, and/or a wide variety of other actions and/or states that may be associated with a virtual machine.
Unfortunately, many virtual machines and/or applications comprised therein may lack adequate fault tolerance. For example, a virtual machine may comprise a small lightweight legacy application that nevertheless provides important functionality (e.g., a business application configured to provide a corporation with access to business data). Such legacy applications may have been developed without fault tolerance in mind. For example, to reduce size and/or complexity, a legacy application may have been written with little to no error reporting and/or handling functionality. Thus, if the legacy application and/or virtual machine fail, then limited error feedback and/or recovery may be available.